
package educar.models;

import educar.db.JPA;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Asignacion {
    private static JPA jpa = new JPA();
        private String dniDocente;
        private String codmateria;
      
        
	 
        //Asignaicon doc a materias
        public Asignacion(String dniDoc, String codmat) {
                this.setDniDocente(dniDoc);
		this.setCodmateria(codmat);
         
	}
                  
        public Asignacion (String[] asignacion) {
             this.setDniDocente(asignacion[0] );
	     this.setCodmateria(asignacion[1]);
          
	}
        
	public static boolean authenticate(String dniDoc, String codmat) {
        try {
            //asigna un doc a una materia pide: dniDoc y codmat
            Asignacion a = Asignacion.getAsignacionByKeys(dniDoc,codmat);
               if ((a.getDniDocente().equals(dniDoc)) && (a.getCodmateria().equals(codmat))){
                 return true;
                }
		 return false;
		} catch (AsignacionNotFound ex) {
			return false;
		}
	}

	public boolean save() {
		try {
                    Asignacion.getAsignacionByKeys(dniDocente, codmateria);
	            return false;
		} catch (AsignacionNotFound e1) {
			String[] columns = { "dniDocente","codmateria"};
                        PreparedStatement stm = jpa.newRecord("educar_dev.asignado", columns);

			try {
				stm.setString(0, dniDocente);
				stm.setString(1, codmateria);
				
			} catch (SQLException e) {
                                e.printStackTrace();
				return false;
			}
			jpa.create(stm);
			return true;
		}
	}

	public void destroy() {
                String[] keys = { "DNIdocente", "codMateria" };
                String[] ids = {this.getDniDocente(), this.getCodmateria()};
		jpa.destroyByKeys("asignado", keys , ids);
	}
	
        public static void destroyAsignacionByKeys(String dniDocente, String codMateria) {
		String[] keys = { "DNIdocente", "codMateria" };
                String[] ids = {dniDocente, codMateria};
                jpa.destroyByKeys("asignado", keys , ids);
	}
        
	
        public static Asignacion getAsignacionByKeys(String dniDoc,String codMat) throws AsignacionNotFound {
            ResultSet rs = null;
            Asignacion asi = null;
            String[] keys = {"DNIdocente", "codMateria"};
            String[] ids = {dniDoc, codMat};
            rs = jpa.getByKeys("asignado", keys , ids);
            try {
                if (rs.next()) {
		asi = new Asignacion(rs.getString(1), rs.getString(2));
			} else {
				throw new AsignacionNotFound();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}

		return asi;
	}
        
        
       public boolean setAsignacionByKeys (String oldDNIDocente, String oldCodMateria) {
               String[] keys = {"DNIdocente", "codMateria"};
               String[] ids = {oldDNIDocente, oldCodMateria};
                jpa.updateByKeys("asignado", "DNIdocente", dniDocente, keys, ids);                
                jpa.updateByKeys("asignado", "codMateria", codmateria, keys, ids);
                ids[1] = dniDocente;
                jpa.updateByKeys("asignado", "DNIdocente", dniDocente, keys, ids);
		return true;
     }

    public String getCodmateria() {
        return codmateria;
    }

    public String getDniDocente() {
        return dniDocente;
    }

    
    public void setCodmateria(String codmateria) {
        this.codmateria = codmateria;
    }

    public void setDniDocente(String dniDocente) {
        this.dniDocente = dniDocente;
    }

    

  
        
	
  
}
